package asCachePool.interfaces
{
	/**
	 * 类对象缓存池
	 * @author Pelephone
	 * @website http://cnblogs.com/pelephone
	 */
	public interface IClassObjectPool
	{
		/**
		 * 通过Class+缓存new出对象
		 * @param cla
		 * @return 
		 */
		function getObj(cla:Class):*;
		/**
		 * 清除所有缓存
		 */
		function removeAllCache():void;
		
		/**
		 * 移除周期时间
		 */
		function removeTimer():void;
		
		/**
		 * 获取绘存容量(能缓存的对象个数)
		 * @return 
		 */
		function get capacity():int;
		
		/**
		 * @private
		 */
		function set capacity(value:int):void;
		
		/**
		 * 清除周期,每隔一定时间清一次过期缓存，为0表示不清理
		 */
		function get clearPeriod():int;
		
		/**
		 * 清除周期,每隔一定时间清一次过期缓存，为0表示不清理
		 * 此值为0会自动关掉过期清理功能
		 */
		function set clearPeriod(value:int):void;
		
		/**
		 * 过期时间，每个对象放进来的时间点+此时间来判断对象是否过期
		 */
		function get expired():int;
		
		/**
		 * @private
		 */
		function set expired(value:int):void;
		
		/**
		 * 将类new出来的对象放入缓存池
		 * @param obj  缓存的对象,一定是new出来的对象
		 */
		function putInPool(obj:Object):void;
	}
}